package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	// 第一题
	fn1()
	// 第二题
	fn2(20)
	// 第三题
	fn3(100)
}

func fn1() {
	var n int
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			if j == 1 {
				n = 2
			} else {
				n = 3
			}
			fmt.Printf("%d*%d=%-[3]*d", j, i, n, i*j)
		}
		fmt.Println()
	}
}

func fn2(n int) {
	sum := 0
	product := int64(1)
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	for i := 0; i < n; i++ {
		v := r.Intn(99) + 1
		fmt.Printf("第%d个非0正整数为:%d\n", i+1, v)
		if i%2 == 0 {
			sum += v
		} else {
			product = product * int64(v)
		}
	}
	fmt.Printf("单数累加求和:%d,偶数累乘求积:%d\n",sum, product)
}

func fn3(n int) {
	a, b := 1, 1
	for {
		a, b = b, a+b
		if a > n {
			break
		}
		fmt.Printf("100以内的斐波那契数列:%d\n", a)
	}
}

// 第一题打印结果
// 1*1=1
// 1*2=2 2*2=4
// 1*3=3 2*3=6  3*3=9
// 1*4=4 2*4=8  3*4=12 4*4=16
// 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
// 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
// 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
// 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
// 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

// 第三题打印结果
// 100以内的斐波那契数列:1
// 100以内的斐波那契数列:2
// 100以内的斐波那契数列:3
// 100以内的斐波那契数列:5
// 100以内的斐波那契数列:8
// 100以内的斐波那契数列:13
// 100以内的斐波那契数列:21
// 100以内的斐波那契数列:34
// 100以内的斐波那契数列:55
// 100以内的斐波那契数列:89